package com.sumainfor.pc.epc.controller.buyer;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sumainfor.common.util.FieldCheckUtil;
import com.sumainfor.common.util.JsonResult;
import com.sumainfor.pc.epc.service.SupplierManageService;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * 供应商
 *
 * @Author PuaChen
 * @Create 2018-12-03 17:09
 */
@RestController
@Log4j2
@RequestMapping("/supplier/manage/")
public class SupplierManageController {

    @Autowired
    private SupplierManageService sup;

    /**
     * 返回所有的供应商的类型
     *
     * @return
     */
    @RequestMapping("/getSupplierTypes")
    public JsonResult getSupplierTypes() {
        return sup.getSupplierTypes();
    }

    /**
     * 获取所有供应商的信息
     * 可以查询条件根据 type 类型区分 硬装还是软装
     * 和根据 时间进行区分 date
     *
     * @param params
     * @return
     */
    @RequestMapping("/getSupplierDataList")
    public JsonResult getSupplierDataList(Page page, @RequestParam Map<String, Object> params) {
        return sup.getSupplierDataList(page, params);
    }


    /**
     * 获得绑定商品列表数据
     * type  类别
     * shopName  商品的名称
     * brand 商品的品牌
     * supId 供应商的ID 必须参数
     *
     * @param params
     * @param page   分页
     * @return
     */
    @RequestMapping("/selectBindShopList")
    public JsonResult selectBindShopList(Page page, @RequestParam Map<String, Object> params) {
        if (!FieldCheckUtil.isMapFieldNotNull(params, "supId")) {
            return JsonResult.errorForEmpty();
        }
        return sup.selectBindShopList(page, params);
    }

    /**
     * 根据供应商的编号去查询采购记录信息
     * 参数:
     * supId 必须参数
     * shopName 商品名称
     * date 时间
     *
     *
     * @param page
     * @param params
     * @return
     */
    @RequestMapping("/buyerLogs")
    public JsonResult buyerLogs(Page page, @RequestParam Map<String, Object> params) {
        if (!FieldCheckUtil.isMapFieldNotNull(params, "supId")) {
            return JsonResult.errorForEmpty();
        }
        return sup.buyerLogs(page, params);
    }

    /**
     * 修改供应商的基本信息
     *
     * @param params
     * @return
     */
    @PostMapping("/updateSupplierBaseData")
    public JsonResult updateSupplierBaseData(@RequestBody Map<String, Object> params) {
        if (!FieldCheckUtil.isMapFieldNotNull(params, "SupId", "SupType")) {
            return JsonResult.errorForEmpty();
        }
        return sup.updateSupplierBaseData(params);
    }

    /**
     * 查询打款记录
     *
     * @param page
     * @param params RemState 审核状态 状态  1确认中  2.被驳回  3.已确认
     *               StaCut 账单类型 账单类型 1.装修结算单,2备件结算单,3.保洁结算单,4.硬装结算单
     *               Date 时间筛选
     * @return
     */
    @RequestMapping("/selectPutPriceLog")
    public JsonResult selectPutPriceLog(Page page, @RequestParam Map<String, Object> params) {
        if (!FieldCheckUtil.isMapFieldNotNull(params, "SupId")) {
            return JsonResult.errorForEmpty();
        }
        return sup.selectPutPriceLog(page, params);
    }

    /**
     * 获得 所有的采购单类型 下拉列表数据
     *
     * @return
     */
    @RequestMapping("/getBuyerType")
    public JsonResult getBuyerType() {
        return sup.getBuyerType();
    }

    /**
     * 创建供应商
     *
     * @param params
     * @return
     */
    @PostMapping("/createSupplier")
    public JsonResult createSupplier(@RequestBody Map<String, Object> params) {
        if (!FieldCheckUtil.isMapFieldNotNull(params, "SupType", "SupId")) {
            return JsonResult.errorForEmpty();
        }
        return sup.createSupplier(params);
    }

    /**
     * 返回 采购记录中 下拉框获取商品名称的数据列表
     *
     * @param supId
     * @return
     */
    @RequestMapping("/getBuyerShopNames")
    public JsonResult getBuyerShopNames(String supId) {
        if (StringUtils.isBlank(supId)) {
            return JsonResult.errorForEmpty();
        }
        return sup.getBuyerShopNames(supId);
    }

}
